import {useEffect, useState} from 'react';
import Geolocation, {
  GeolocationResponse,
} from '@react-native-community/geolocation';

/**
 * 获取用户位置
 */
export type PositionType = {
  latitude: number;
  longitude: number;
} | null;
export const useLocation = () => {
  // 存储获取到的位置信息，初始值为 null
  const [position, setPosition] = useState<PositionType>(null);
  // 存储获取位置时发生的错误信息，初始值为 null
  const [error, setError] = useState<boolean>(false);

  // 请求位置权限并获取位置信息的函数
  const requestLocationPermission = () => {
    Geolocation.getCurrentPosition(
      // 成功获取位置信息时的回调函数
      (pos: GeolocationResponse) => {
        setPosition(pos.coords);
      },
      // 获取位置信息失败时的回调函数
      err => {
        setError(true);
        console.log(err.code, err.message);
      },
      {enableHighAccuracy: true, timeout: 15000, maximumAge: 10000},
    );
  };

  // 在组件挂载时调用请求位置权限的函数
  useEffect(() => {
    requestLocationPermission();
  }, []);

  return {
    position,
    error,
  };
};
